package com.fndsoft.police.xuancheng.ui.base;

import android.os.Bundle;

import com.fndsoft.police.xuancheng.componet.colog.COLog;
import com.fndsoft.police.xuancheng.data.EventBusData;
import com.fndsoft.police.xuancheng.domain.ThreadMessage;
import com.fndsoft.police.xuancheng.net.OperateCode;
import com.fndsoft.police.xuancheng.util.ViewUtil;

/**
 * @author carlos carlosk@163.com
 * @version 创建时间：2013-4-1 上午6:11:30 用来封装通用的接口
 */

public abstract class BaseInterfaceAc extends BaseCommonAct {

	public void onEventMainThread(ThreadMessage threadMessage) {
		COLog.d("onEventMainThread收到一个" + threadMessage);
		if (null != threadMessage) {
			receiveFromService(threadMessage);
		}
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		EventBusData.getSendToUIEventBus().register(this);
	}

	@Override
	protected void onResume() {
		super.onResume();
	}

	@Override
	protected void onPause() {
		super.onPause();
	}

	@Override
	protected void onDestroy() {
		EventBusData.getSendToUIEventBus().unregister(this);
		super.onDestroy();

	}

	/**
	 * 
	 * 数据收发相关开始
	 * 
	 */
	/**
	 * 从服务上接收到数据
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2012-11-7 下午3:31:39
	 * @param threadMessage
	 */
	protected void receiveFromService(ThreadMessage threadMessage) {
		// 如果错误码大于0，则说明有错误
		int errorCode = threadMessage.getErrorCodeResId();
		COLog.d("errorCode = " + errorCode);
		if (errorCode > 0 && !threadMessage.isReceviceIsSucces()) {
			if (!isOperateError(threadMessage)) {
				ViewUtil.showToast(errorCode);
				hideProgress();
			}
			return;
		}
		// 不然则执行相关的回调方法
		this.doResponseFinished(threadMessage.getOperateCode(), threadMessage);
	}

	/**
	 * 当数据返回的通用方法
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2013-4-1 上午7:31:08
	 * @param operateCode
	 * @param threadMessage
	 */
	public abstract void doResponseFinished(OperateCode operateCode,
			ThreadMessage threadMessage);

	/**
	 * 发送到后台
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2012-11-7 下午3:47:26
	 */
	public void sendToBackgroud(ThreadMessage threadMessage) {
		EventBusData.getSendToHttpEventBus().post(threadMessage);
	}

	/**
	 * 发送到后台
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2012-11-7 下午3:47:26
	 */
	public void sendToBackgroud(OperateCode operateCode) {
		ThreadMessage threadMessage = ThreadMessage
				.createThreadMessage(operateCode);
		sendToBackgroud(threadMessage);
	}

	/**
	 * 是否要处理异常 注意，这个是钩子方法，只让子类实现 返回值如果是false则会显示错误结果
	 * 
	 * @author carlos carlosk@163.com
	 * @version 创建时间：2012-11-7 下午3:50:09
	 * @param threadMessage
	 * @return
	 */
	protected boolean isOperateError(ThreadMessage threadMessage) {
		return false;
	}
	/**
	 * 
	 * 数据收发相关结束
	 * 
	 */

}
